home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include "defs.h"
-
- har *progname;
- ixrect *pr1, *pr2;
-
- #ifdef STANDALONE
- ain(argc, argv, envp)
- #else
- lend_main(argc, argv, envp)
- #endif
- int argc;
- char **argv;
- char **envp;
- {
- register int i, j;
- int pix1, pix2, outpix;
- FILE *f1, *f2;
- float wt1, wt2;
-
- f1 = stdin;
- f2 = stdin;
- wt1 = wt2 = 1.;
- progname = strsave(argv[0]);
- parse_profile(&argc, argv, envp);
-
- while ((gc = getopt(argc, argv, "f:w:F:W:")) != EOF)
- switch (gc) {
- case 'f':
- if ((f1 = fopen(optarg, "r")) == NULL)
- error("Can't open %s\n", optarg);
- break;
- case 'F':
- if ((f2 = fopen(optarg, "r")) == NULL)
- error("Can't open %s\n", optarg);
- break;
- case 'w':
- wt1 = atof(optarg);
- break;
- case 'W':
- wt2 = atof(optarg);
- break;
- case '?':
- errflag++;
- break;
- }
-
- if (errflag)
- error((char *) 0, "Usage: %s: [-f filename1] [-w weighting1] [-F filename2] [-W weighting2] [outfile] \n", progname);
-
- for (stream = 0; optind < argc; stream++, optind++)
- if (stream == 0 && strcmp(argv[optind], "-") != 0)
- if (freopen(argv[optind], "w", stdout) == NULL)
- error("%s %s", PR_IO_ERR_INFILE, argv[optind]);
-
- if (f1 == f2)
- error("Can't blend an image with itself\n");
-
- if ((pr1 = pr_load(f1, NULL)) == NULL)
- error(PR_IO_ERR_RASREAD);
-
- if ((pr2 = pr_load(f2, NULL)) == NULL)
- error(PR_IO_ERR_RASREAD);
-
- if (pr1->pr_size.x != pr2->pr_size.x || pr1->pr_size.y != pr2->pr_size.y || pr1->pr_depth != pr2->pr_depth)
- error("Image dimensions not equal\n");
-
- for (j = 0; j < pr1->pr_size.y; j++)
- for (i = 0; i < pr1->pr_size.x; i++) {
- pix1 = pr_get(pr1, i, j);
- pix2 = pr_get(pr2, i, j);
- outpix = (int) (((float) pix1 * wt1 + (float) pix2 * wt2) / (wt1 + wt2));
- pr_put(pr1, i, j, outpix);
- }
-
- pr_dump(pr1, stdout, NULL, RT_STANDARD, 0);
- }
-